// 示例 1：
// 输入：s = "babad"
// 输出："bab"
// 解释："aba" 同样是符合题意的答案。
// 示例 2：
// 输入：s = "cbbd"
// 输出："bb"

s = "babad"

var longestPalindrome = function (s) {
    // 中心扩展法
    // 遍历每一个字符
    // 找到以这个字符为中心的奇数回文和偶数回文子串的最长长度
    if (s.length < 1) return '';

    const expandAroundCenter = (left, right) => {
        while (left >= 0 && right < s.length && s[left] === s[right]) {
            left--;
            right++;
        }
        return right - left - 1;
    };

    let start = 0, maxLength = 0;

    for (let i = 0; i < s.length; i++) {
        const len1 = expandAroundCenter(i, i);      // 奇数长度回文
        const len2 = expandAroundCenter(i, i + 1);  // 偶数长度回文
        const currentMax = Math.max(len1, len2);

        if (currentMax > maxLength) {
            maxLength = currentMax;
            start = i - Math.floor((currentMax - 1) / 2);
        }
    }

    return s.substring(start, start + maxLength);
};

console.log(longestPalindrome(s));
